package main

import "fmt"

func main() {
	a1 := []int{1, 3, 5}
	a2 := a1 // 赋值
	var a3 = make([]int, 3, 3)
	copy(a3, a1)            // copy
	fmt.Println(a1, a2, a3) // [1 3 5] [1 3 5] [1 3 5]
	a1[0] = 100
	// a3的元素不会被修改
	fmt.Println(a1, a2, a3) // [100 3 5] [100 3 5] [1 3 5]

	x1 := [...]int{1, 3, 5}           // 数组
	s1 := x1[:]                       // 切片
	fmt.Println(s1, len(s1), cap(s1)) // [1 3 5] 3 3
	s1 = append(s1[:1], s1[2:]...)	// 这样会修改底层数组
	fmt.Println(s1, len(s1), cap(s1)) // [1 5] 2 3
	// 等于之前数组中元素3去掉了,所以后面向前移动,最后一位还是之前的元素值
	fmt.Println(x1)                   // [1 5 5]
	fmt.Println(s1)                   // [1 5]

}
